from playwright.sync_api import expect, Page
from tools.Data import Data
import pytest
import time

# 新增出库单页面
class AddOutboundPage:
    def __init__(self, page: Page):
        self.data = Data()
        self.page = page
        # 重量
        self.weight = "20"
        # 数量
        self.num = "200"
        # 姓名
        self.name = self.data.generate_name()
        # 手机号
        self.phone = self.data.generate_phone_number()
        # 身份证
        self.idCard = self.data.generate_id_number()

    # 新增出库
    def navigate(self):
        self.page.goto("/#/outbound/outbound/add")

    # 待出库
    def awaiting_stock_out(self):
        self.page.goto("/#/outbound/outbound")

    # 出库单信息
    def outbound_order_info(self):
        self.page.get_by_role("button", name="新建出库单").click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="出库单信息客户类型 仓库 公司名称 客户名称 手机号").get_by_role("textbox").first.click()
        self.page.get_by_text("仓储物流").click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="出库单信息客户类型 仓储物流仓库 公司名称 客户名称 手机号").get_by_role("textbox").nth(1).click()
        self.page.locator("li").filter(has_text="南城仓").click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="出库单信息客户类型 仓储物流仓库 南城仓公司名称 客户名称 手机号").get_by_role("textbox").nth(
            2).click()
        self.page.get_by_text("星月科技(小星,13200000009)").click()

    # 选择货物列表,获取出库单的批次号
    def get_batch_no(self):
        self.page.get_by_role("button", name="选择货物").click()
        self.page.wait_for_timeout(1000)
        # 获取列表第1行第3列数据:出库单批次号
        n = self.page.locator('//*[@class="arco-table-element"]/tbody/tr[1]/td[3]')
        # print(n.inner_text())  # 获取第1行第3列数据,批次号
        return n.inner_text()

    # 选择货物
    def select_goods(self):
        # self.page.wait_for_timeout(1000)
        self.page.get_by_role("row", name="ABS/北京首塑/A310").first.locator("div").click()
        self.page.get_by_role("button", name="确定").click()
        self.page.get_by_role("row", name="库区1 ABS/北京首塑/A310 100", exact=True).get_by_role(
            "textbox").first.click()
        self.page.get_by_role("row", name="库区1 ABS/北京首塑/A310 100", exact=True).get_by_role("textbox").first.fill(
            self.weight)
        self.page.get_by_role("row", name="库区1 ABS/北京首塑/A310 100 20", exact=True).get_by_role("textbox").nth(
            1).click()
        self.page.get_by_role("row", name="库区1 ABS/北京首塑/A310 100 20", exact=True).get_by_role("textbox").nth(
            1).fill(
            self.num)
        self.page.get_by_role("row", name="库区1 ABS/北京首塑/A310 100 20 200").get_by_role("textbox").nth(2).click()
        self.page.get_by_role("row", name="库区1 ABS/北京首塑/A310 100 20 200").get_by_role("textbox").nth(2).fill(
            "自动出库")

    def pickup_information(self):
        # 编辑提货信息
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role(
            "textbox").first.click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role(
            "textbox").first.fill("001")
        self.page.get_by_placeholder("请选择日期").click()
        self.page.get_by_text("今天").click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role("textbox").nth(
            2).click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role("textbox").nth(
            2).fill(self.name)
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role("textbox").nth(
            3).click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role("textbox").nth(
            3).fill(self.phone)
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role("textbox").nth(
            4).click()
        self.page.get_by_role("main").locator("section").filter(
            has_text="提货信息提货车辆牌号 提货时间 司机姓名 司机手机号 司机身份证号").get_by_role("textbox").nth(
            4).fill(self.idCard)
        self.page.locator("textarea").click()
        self.page.locator("textarea").fill("出库自动化测试")
        self.page.get_by_role("button", name="提交").click()
        # self.page.wait_for_timeout(3000)

    def pending_exit_order(self):
        self.page.wait_for_timeout(2000)
        # 获取待出库仓单批次号
        n = self.page.locator('//*[@class="arco-table-element"]/tbody/tr[1]/td[3]')
        print(n.inner_text())
        return n.inner_text()
        # self.page.wait_for_timeout(2000)

    def confirm_exit_order(self):
        self.page.get_by_text("确认出库").first.click()
        self.page.get_by_role("button", name="提交").click()

    def issued_exit_order(self):
        self.page.wait_for_timeout(2000)
        # 获取已出库仓单批次号
        n = self.page.locator('//*[@class="arco-table-element"]/tbody/tr[1]/td[3]')
        print(n.inner_text())
        return n.inner_text()